package pe.edu.upc.jtigers.svpn.domain.model;

import java.io.Serializable;
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;

import org.codehaus.jackson.annotate.JsonIgnore;

@Entity
public class Menu implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -8946057724352018700L;
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private int idMenu;
	private String nombre;
	private String url;
	private boolean eliminado;
	// Un meno esta asociado a varioas perfiles
	@JsonIgnore
	@ManyToMany
	@JoinTable(name="menuperfil", 
    joinColumns=@JoinColumn(name="IdMenu"),
    inverseJoinColumns=@JoinColumn(name="IdPerfil"))
	private Set<Perfil> perfiles;

	@OneToMany(mappedBy = "ultimoMenuVisitado")
	@JsonIgnore
	private Set<Usuario> usuarios;
	
	public Menu() {
	}

	public int getIdMenu() {
		return idMenu;
	}

	public void setIdMenu(int idMenu) {
		this.idMenu = idMenu;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public boolean isEliminado() {
		return eliminado;
	}

	public void setEliminado(boolean eliminado) {
		this.eliminado = eliminado;
	}

	public Set<Perfil> getPerfiles() {
		return perfiles;
	}

	public void setPerfiles(Set<Perfil> perfiles) {
		this.perfiles = perfiles;
	}
}
